package affichage;


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import regles.Regle;
import regles.TypeScenario;
import terrain.Terrain;
import unite.TypeCombat;

import deroulementjeu.Equipe;
import deroulementjeu.Partie;


/**
 * Fenêtre qui est créée à la fin d'une partie pour afficher le gagnant de la
 * partie et deux boutons pour accéder au menu principal ou quitter le jeu
 * @author Alexis BRASY, Geoffrey LEQUESNE, Sandrine PIRIOU, Michel POPOV
 *
 */
public class FinPartieView extends JFrame {

    /** Entier nécessaire à la sérialisation */
    private static final long serialVersionUID = 1L;
    /** La partie */
    private Partie partie;
    /** le bouton pour retourner au menu principal */
    private Bouton menuP;
    /** le bouton pour quitter le programme */
    private Bouton quitter;
    /** le label qui affiche l'équipe gagnante */
    private JLabel label;
    /** Le panel qui contient les deux boutons */
    private JPanel buts;

    /**
     * Constructeur d'une FinPartieView
     * @param p la partie
     * @param gagnante l'équipe qui a gagné la partie (pour afficher dans le label)
     */
    public FinPartieView(Partie p, Equipe gagnante) {
        label = new JLabel();
        buts = new JPanel();
        this.partie = p;
        this.setResizable(false);
		
        JPanel pane = new JPanel();
        PanelVide vide = new PanelVide();

        vide.setPreferredSize(new Dimension(500, 100));
        buts.setPreferredSize(new Dimension(200, 200));
		
        this.menuP = new Bouton("Menu Principal", this);
        menuP.setSize(170, 70);
        this.quitter = new Bouton("Quitter", this);
        quitter.setSize(170, 70);
		
        partie.getJeuView().setVisible(false);
		
        this.setLocationRelativeTo(null);
		
        this.setSize(500, 250);
        this.setVisible(true);
		
        if (gagnante.getCouleur().equals(Color.red)) {
            label.setText("Le joueur rouge a gagné !");
        } else {
            label.setText("Le joueur bleu a gagné !");
        }

        this.getContentPane().add(pane);

        pane.add(label);
        pane.add(vide);
        pane.add(buts);
        buts.add(menuP);
        buts.add(quitter);
        
    }
	
    /**
     * Classe des boutons menu principal et quitter
     * @author Alexis BRASY, Geoffrey LEQUESNE, Sandrine PIRIOU, Michel POPOV
     *
     */
    class Bouton extends JButton implements MouseListener {
		 
        /** Entier nécessaire à la sérialisation */
        private static final long serialVersionUID = 1L;
        /** La JFrame (FinPartieView) où on doit ajouter les boutons */
        private FinPartieView finPartieV;
	    
        /**
         * Constructeur du bouton
         * @param str le titre du bouton
         * @param fpv la FinPartieView
         */
        public Bouton(String str, FinPartieView fpv) {
            super(str);
            this.finPartieV = fpv;
	            
            this.addMouseListener(this);
	            
        }

        /**
         * Redéfinition de la méthode mouseClicked
         * @param event l'évènement de la souris
         */
        @Override
        public void mouseClicked(MouseEvent event) {
            if (event.getSource() == menuP) {
                finPartieV.setVisible(false);
                Regle r = new Regle(TypeCombat.ASSAUT,
                        TypeScenario.GOTTAKILLTHEMALL, 3, 3, 3, 3);
                Terrain t = new Terrain(10, 10, r);

                new Fenetre(new Partie(r, t));
            } else if (event.getSource() == quitter) {
                System.exit(0);
            }
        }

        @Override
        public void mouseEntered(MouseEvent event) {}

        @Override
        public void mouseExited(MouseEvent event) {}

        @Override
        public void mousePressed(MouseEvent event) {}

        @Override
        public void mouseReleased(MouseEvent event) {}       
    }
	
    
    /**
     * Classe d'un panel qui sera vide
     * @author Alexis BRASY, Geoffrey LEQUESNE, Sandrine PIRIOU, Michel POPOV
     *
     */
    class PanelVide extends JPanel {

        /** Entier nécessaire à la sérialisation */
        private static final long serialVersionUID = 1L;

        /**
         * Constructeur vide d'un PanelVide
         */
        public PanelVide() {}
		
        /**
         * La méthode paintComponent qui ne contient rien
         * ainsi, le panel sera vide
         */
        public void paintComponent(Graphics g) {}
    }
}
